package campeonatofutebol.util;

import java.util.ArrayList;
import java.util.Collection;
import java.util.TimerTask;

import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import campeonatofutebol.bean.RepositorioDeDados;

class AtualizarFeed extends TimerTask {

	Servico s;
	
	private static final int NOTIFICATION_EX = 1;
	private NotificationManager notificationManager;
	private ArrayList<String> favoritados;
	
	public AtualizarFeed(Servico s, ArrayList<String> favoritados) {
		this.s = s;
		this.favoritados = favoritados;
	}
	
	@Override
	public void run() {
		try {
			GerenciadorServico gerenciador = GerenciadorServico.getInstance();
			RepositorioDeDados rd = RepositorioDeDados.getInstance();
			CarregadorDeFeeds carregadorInstance = CarregadorDeFeeds.getInstance();
			if(!favoritados.isEmpty()) {
				String time = favoritados.get(0);
				carregadorInstance.setTimeAtual(time);
				Collection<String> actualUpdate = carregadorInstance.carregaFeed();
				Collection<String> lastUpdate = gerenciador.getUltimaAtualizacao();
				if(lastUpdate != null) {
					if(!lastUpdate.equals(actualUpdate))
						notificar();
				} else
					notificar();
				gerenciador.setUltimaAtualizacao(actualUpdate);
			}
		} catch (Exception e) {
			Log.w("!!!", ""+e.getMessage());
		}
	}
	
	private void notificar() {
	    notificationManager = (NotificationManager) 
	    s.getSystemService(Context.NOTIFICATION_SERVICE);
	
	    int icon = android.R.drawable.stat_notify_sync;
	    CharSequence tickerText = "Novidades";
	    long when = System.currentTimeMillis();
	
	    Notification notification;
	    notification = new Notification(icon, tickerText, when);
	    Context context = s.getApplicationContext();
	    CharSequence contentTitle = "Novidades sobre seu time favorito";
	    CharSequence contentText = "Foram recebidas novas noticias sobre o seu time favorito";
	    Intent notificationIntent = new Intent(s, campeonatofutebol.activity.MessageList.class);
	    notificationIntent.putExtra("carregarFavoritos", true);
	    PendingIntent contentIntent = PendingIntent.getActivity(s, 
	        0, notificationIntent, 0);
	
	    notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);
	    notification.flags = Notification.DEFAULT_LIGHTS | Notification.FLAG_AUTO_CANCEL;

	
	    notificationManager.notify(NOTIFICATION_EX, notification);
	    Log.w("!!!", "atualizacao");
	}
	
}